package com.pet.system.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.pet.system.domain.entity.SysUser;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/** @author Centaurea */
public interface SysUserMapper extends BaseMapper<SysUser> {

  /**
   * 批量更新
   *
   * @param list 更新内容
   * @return 执行情况
   */
  int updateBatch(List<SysUser> list);

  /**
   * 批量更新非null字段
   *
   * @param list 更新内容
   * @return 执行情况
   */
  int updateBatchSelective(List<SysUser> list);

  /**
   * 批量插入
   *
   * @param list 插入内容
   * @return 执行情况
   */
  int batchInsert(@Param("list") List<SysUser> list);

  /**
   * 更新或者添加一条数据
   *
   * @param record 数据内容
   * @return 执行情况
   */
  int insertOrUpdate(SysUser record);

  /**
   * 更新或者添加一条数据的非null字段
   *
   * @param record 数据内容
   * @return 执行情况
   */
  int insertOrUpdateSelective(SysUser record);

  @Select(
      "SELECT m.permission from sys_role_user ur "
          + "LEFT JOIN sys_role_resource rm on ur.role_id = rm.role_id "
          + "LEFT JOIN sys_resource m on rm.resource_id = m.id "
          + "WHERE ur.user_id = #{userId} "
          + "UNION ALL SELECT m.permission FROM sys_user_resource ur "
          + "LEFT JOIN sys_resource m ON ur.resource_id = m.id WHERE ur.user_id = #{userId}")
  List<String> queryAllPerms(Integer userId);
}
